/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package occho.model;

import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import java.util.Set;
import occho.data.AsignaturaDAO;
import occho.data.OracleDAOFactory;
import occho.data.PreguntaDAO;
import occho.data.TestDAO;

/**
 *
 * @author Migue
 */
public class FachadaGestionTest {
    
    private Usuario usuario = null;
    private Test test = null;
    
    /**
     * Constructor de la clase.
     * @param usuario
     */
    public FachadaGestionTest(Usuario usuario) {
        this.usuario = usuario;
    }
    
    /**
     * Inserta un test en la base de datos.
     * @param t
     * @param a
     * @return boolean
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public boolean insertarTest(Test t, Asignatura a) throws ClassNotFoundException, SQLException{
        OracleDAOFactory fact = OracleDAOFactory.getInstancia();
        TestDAO tDAO = fact.getTestDAO();

        if (!tDAO.insertarTest(t, a)){
            return false;
        }
        else if (!t.getPreguntas().isEmpty()){
            if (!tDAO.insertarTestPreguntas(t)){
                return false;
            }
        }
        return true;
    }
    
    /**
     * Obtiene la lista de preguntas de un tema.
     * @param t
     * @return List<Pregunta>
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public List<Pregunta> seleccionarPreguntas(Tema t) throws ClassNotFoundException, SQLException {
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        PreguntaDAO preguntaDAO = daoFactory.getPreguntaDAO();
        return preguntaDAO.seleccionarPreguntas(t);
    } 
    
    /**
     * Obtiene una lista de las asignaturas.
     * @return List<Asignatura>
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public List<Asignatura> seleccionarAsignaturas() throws ClassNotFoundException, SQLException {
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        AsignaturaDAO asignaturaDAO = daoFactory.getAsignaturaDAO();
        return asignaturaDAO.seleccionarAsignaturas(usuario);
    }
    
    /**
     * Obtiene la lista de los tests de una asignatura
     * @param a
     * @return List<Test>
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public List<Test> seleccionarTests(Asignatura a) throws ClassNotFoundException, SQLException {
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        TestDAO testDAO = daoFactory.getTestDAO();
        return testDAO.seleccionarTests(a);
    }
    
    /**
     * Elimina un test de la base de datos.
     * @param t
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public void eliminarTest(Test t) throws ClassNotFoundException, SQLException {
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        TestDAO testDAO = daoFactory.getTestDAO();
        testDAO.borrarTest(t);
    }
    
    /**
     * Devuelve el atributo test.
     * @return Test
     */
    public Test getTest() {
        return test;
    }

    /**
     * Da valor al atributo test
     * @param test
     */
    public void setTest(Test test) {
        this.test = test;
    }
    
   
}
